package SegundaAula;
import java.util.Scanner;

public class Binario {
   
    public static final int SISTEMA = 2; // Sistema binário
   
    public static String complementoDeDois(String str){
        String valor = "";
        String valorFinal = "";
        boolean naoAchou1 = true;
        //Iteração para achar o string(positivo) relativo ao str(negativo).
        //Só que o string fica ao contrário  
        for(int i = str.length()-1; i >= 0; i--){
        	if (str.charAt(i) == '0'){
        		if(naoAchou1){
        			valor += '0';
        		}else{
        			valor += '1';
        		}
        	}
        	if (str.charAt(i) == '1'){
        		if(naoAchou1){
        			valor += '1';
            		naoAchou1 = false;
        		} else{
        			valor += '0';
        		}
        	}
		}
        //Essa iteração é para inverter o string anterior que estava ao contrário
        for(int j = valor.length() - 1; j >= 0; j--){
        	valorFinal += valor.charAt(j);
        }
		return valorFinal;
	}  
    
    public static int binarioParaDecimal(String s){
        int soma = 0;
        int expoente = 0;
        for (int i = s.length() - 1; i >= 0; i--) {
			soma += Math.pow(SISTEMA, expoente)
					* Integer.parseInt(s.substring(i, i + 1));
			expoente++;
		}
        return soma;
    }
   
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        System.out.print("Coloque um numero binario(8 bits): ");
        String str = s.nextLine();
        
        if(str.length() != 8){
        	System.err.println("Entrada invalida!");
        	System.exit(1);
        }

        if ( str.charAt(0) == '1'){
        	String valor = complementoDeDois(str);
            System.out.println("-"+binarioParaDecimal(valor));
        } else if ( str.charAt(0) == '0') {
            System.out.println(binarioParaDecimal(str));
        }
    }
}